const express = require("express");
const router = express.Router();
const dao = require("../dao/mysql/UsersDao");
const pager = require("../util/PagerHelper.js");

router.all("/list.do", async (req, res, next) => {
  let where = "";
  let flag = 0; //控制多条件是否要加and
  if (req.body) {
    console.log("req.body", req.body);
    if (req.body.uname) {
      if (where.trim().length === 0) {
        where += "where ";
      }
      where += `uname like '%${req.body.uname}%' `;
      flag++;
    }
    if (req.body.uaccount) {
      if (where.trim().length === 0) {
        where += "where ";
      }
      where += `uaccount like '%${req.body.uaccount}%' `;
      flag++;
    }
    if (req.body.state) {
      if (where.trim().length === 0) {
        where += "where ";
      }
      if (flag > 0) {
        where += " and ";
      }
      where += `state like '%${req.body.state}%' `;
      flag++;
    }
    if (req.body.role) {
      if (where.trim().length === 0) {
        where += "where ";
      }
      if (flag > 0) {
        where += " and ";
      }
      where += `role like '%${req.body.role}%' `;
      flag++;
    }
    console.log(where);
  }
  dao
    .getCount(where)
    .then(count => {
      console.log("count", count);
      pager.setCount(count);
      return dao.findByPage(where);
    })
    .then(data => {
      console.log("data", data);
      pager.data = data;
      res.json({
        code: 200,
        data: pager,
      });
    })
    .catch(err => next(err));
});

router.get("/publiclist.do", async (req, res, next) => {
  let { id } = req.query;
  if (req.body) {
    dao.findByuid(id).then(data => {
      console.log("data", data);
      pager.data = data;
      res.json({
        code: 200,
        data: pager,
      });
    })
    .catch(err => next(err));
    }
});


router.get("/del.do", (req, res, next) => {
  // lodash.remove(books, value => value.id == req.query.id);
  if (req.query.id) {
    dao.deleteById(req.query.id).then(data =>
      res.json({
        code: 200,
        msg: "缺少ID值",
      })
    );
  }
});

router.get("/pay.do", (req, res, next) => {
  let { id, amount } = req.query;
  if (id) {
    dao
      .findById(id)
      .then(editObj => {
        if (editObj.wallet - amount > 0) {
          editObj.wallet = editObj.wallet - amount;
          dao
            .update(editObj, editObj.id)
            .then(data =>
              res.json({
                code: 200,
                msg: "支付成功",
              })
            )
            .catch(err => next(err));
        } else {
          res.json({
            code: 500,
            msg: "您的余额不足",
          });
        }
      })
      .catch(err => next(err));
  } else {
    res.json({
      code: 404,
      msg: "没有id！",
    });
  }
});

router.get("/delBatch.do", (req, res, next) => {
  let idsStr = req.query.ids;
  console.log(idsStr);
  let ids;
  if (Array.isArray(idsStr)) {
    ids = idsStr;
  } else {
    ids = idsStr.split(","); //得到的是一个字符串数组
  }

  dao
    .deleteByIds(ids)
    .then(data =>
      res.json({
        code: 200,
        msg: "删除成功",
      })
    )
    .catch(err => next(err));
});

router.get("/edit.do", (req, res, next) => {
  console.log("req.query:", req.query);
  let { id } = req.query;
  if (id) {
    // let editObj = books.find(value => value.id == id);
    dao
      .findById(id)
      .then(editObj => {
        if (editObj) {
          res.json({
            code: 200,
            data: editObj,
          });
        } else {
          res.json({
            code: 404,
            msg: "没有找到记录！",
          });
        }
      })
      .catch(err => next(err));
  } else {
    res.json({
      code: 404,
      msg: "没有id！",
    });
  }
});

//一个表单修改两个表（users、address）
router.get("/editAddress.do", (req, res, next) => {
  let { id } = req.query;
  if (id) {
    dao
      .findAddress(id)
      .then(editObj => {
        if (editObj) {
          res.json({
            code: 200,
            data: editObj,
          });
        } else {
          res.json({
            code: 404,
            msg: "没有找到记录！",
          });
        }
      })
      .catch(err => next(err));
  } else {
    res.json({
      code: 404,
      msg: "没有id！",
    });
  }
});

router.get("/showWallet.do", (req, res, next) => {
  let { uname } = req.query;
  if (uname) {
    dao
      .findWallet(uname)
      .then(data =>
        res.json({
          code: 200,
          data: data,
        })
      )
      .catch(err => next(err));
  } else {
    res.json({
      code: 404,
      msg: "没有uname！",
    });
  }
});

router.post("/save.do", (req, res, next) => {
  let newObj = Object.assign({}, req.body);
  console.log("newObj:", newObj);
  //区分添加还是编辑
  if (newObj.id) {
    dao
      .update(newObj, newObj.id)
      .then(data =>
        res.json({
          code: 200,
          msg: "修改成功",
        })
      )
      .catch(err => next(err));
  } else {
    newObj.id = 0; //id是自动增长，必须是0值
    dao
      .insert(newObj)
      .then(data =>
        res.json({
          code: 200,
          msg: "添加成功",
        })
      )
      .catch(err => next(err));
  }
});

router.post("/register.do", (req, res, next) => {
  let newObj = Object.assign({}, req.body);
  console.log("newObj:", newObj);

  newObj.id = 0; //id是自动增长，必须是0值
  dao
    .insert(newObj)
    .then(data =>
      res.json({
        code: 200,
        msg: "注册成功",
      })
    )
    .catch(err => next(err));
});

module.exports = router;
